//使用exports分别导出需要的函数
//导入数据库操作模块
const db=require('../db/index')
//引入加密密码的包
const bcrypt=require('bcryptjs')
//引入生成token的包
const jwt = require('jsonwebtoken')

const config=require('../config')

exports.regUser = (req, res) => {
    const userinfo=req.body //获取用户提交的表单数据
  // 判断数据是否合法
if (!userinfo.username || !userinfo.password) {//判断密码和用户名是否为空
  return res.send({ status: 1, message: '用户名或密码不能为空！' })
}
//判断用户名是否被占用
const sqlstr = 'select * from evuser where username=?'//编写查询语句
db.query(sqlstr,userinfo.username,(err,results)=>{//如果有错误就抛出错误，没有就判断查询到的数据长度
    // if(err){
    //     return res.send({status: 1, message: err.message})
    // }
    if(results.length>0){
        return res.send({status: 1, message:'用户名被占用'})//如果查询到的数据大于0，那么就有数据，说明用户名被占用了
    }
    //对密码进行加密
userinfo.password=bcrypt.hashSync(userinfo.password,10)
//添加新的用户
const sqltianjia='insert into evuser set ?'
db.query(sqltianjia,{username:userinfo.username,password:userinfo.password},(err,results)=>{
      // 执行 SQL 语句失败
//   if (err) return res.send({ status: 1, message: err.message })
  // SQL 语句执行成功，但影响行数不为 1
//   if (results.affectedRows !== 1) {
//     return res.send({ status: 1, message: '注册用户失败，请稍后再试！' })
//   }
  // 注册成功
  res.send({ status: 0, message: '注册成功！' })
  
})

})
  }
  exports.login = (req, res) => {
      const userinfo=req.body//获取表单的数据
const sql='select * from evuser where username=?'
db.query(sql,userinfo.username,(err,results)=>{
    if(err) {return res.cc(err)}
    if(results.length!==1){ return res.cc('密码错误')}

    // 拿着用户输入的密码,和数据库中存储的密码进行对比
const compareResult = bcrypt.compareSync(userinfo.password, results[0].password)
// 如果对比的结果等于 false, 则证明用户输入的密码错误
if (compareResult) {
  return res.cc('登录失败！')}
// else{
//     return res.cc('登陆成功')
// }
//生成token值
// 剔除完毕之后，user 中只保留了用户的 id, username, nickname, email 这四个属性的值
const user = { ...results[0], password: '', user_pic: '' }
// 生成 Token 字符串
const tokenStr = jwt.sign(user, config.jwtSecretKey, {
    expiresIn: '10h', // token 有效期为 10 个小时
  })
  //响应给客户端
  res.send({
      status:0,
      message:'登陆成功',
      token:'Bearer ' + tokenStr
      // 为了方便客户端使用 Token，在服务器端直接拼接上 Bearer 的前缀
  })
})

  }